Live Range Splitting in a Graph Coloring Register Allocator

نویسندگان

  • Keith D. Cooper
  • L. Taylor Simpson
چکیده

Abstrac t . Graph coloring is the dominant paradigm for global register allocation [8, 7, 4]. Coloring allocators use an interference graph, Z, to model conflicts that prevent two values from sharing a register. Nodes in 2: represent live ranges. An edge between two nodes indicates that they are simultaneously live azld, thus, cannot share a register. The allocator tries to construct a k-coloring of 2:, for k equal to the number of registers on the target machine. If it succeeds, it maps the colors onto the machine registers to produce an allocation. Unfortunately, it may not discover a k-coloring. In that case, it sp///s some live ranges by saving their values to memory. Early coloring allocators spilled live ranges completely at each definition and use. This approach often introduces more spill code than necessary. This paper presents a global approach that avoids some spill code by splitting the live range, breaking it into smaller pieces.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Global Register Allocation Based on Graph Fusion

A register allocator must effectively deal with three issues: live range splitting, live range spilling, and register assignment. This paper presents a new coloring-based global register allocation algorithm that addresses all three issues in an integrated way: the algorithm starts with an interference graph for each region of the program, where a region can be a basic block, a loop nest, a sup...

متن کامل

Improved Passive Splitting

We present a graph coloring register allocator which uses an improved form of passive live range splitting to reduce the count of dynamic spill operations. Program structure is used to guide the global splitting of live ranges and to place split operations at infrequently executed portions of the program. We also optimistically reconsider spill decisions at certain points to potentially enable ...

متن کامل

Register Spilling and Live-Range Splitting for SSA-Form Programs

Register allocation decides which parts of a variable’s live range are held in registers and which in memory. The compiler inserts spill code to move the values of variables between registers and memory. Since fetching data from memory is much slower than reading directly from a register, careful spill code insertion is critical for the performance of the compiled program. In this paper, we pre...

متن کامل

Approaches to Enhance Graph Coloring Register Allocation

The relationship between run-time performance and effective use of a machine’s register set is well understood. Graph coloring method, which pioneered by Chaitin, has been widely practiced. In this paper, we describe three improvements to Chaitin-style graph coloring register allocators. The first is a more precise definition on interference. The second is called rename, which can be easily inc...

متن کامل

Cooperative Instruction Scheduling with Linear Scan Register Allocation

Linear scan register allocation is an attractive register allocation algorithm because of its simplicity and fast running time. However, it is generally felt that linear scan register allocation yields poorer code than allocation schemes based on graph coloring. In this paper, we propose a pre-pass instruction scheduling algorithm that improves on the code quality of linear scan allocators. Our...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1998